Лабораторная работа 5

Накова Амина

Российский университет дружбы народов

2025-09-20

Вводная часть

Цель работы

Изучение механизмов изменения идентификаторов, применения SetUID- и Sticky-битов. Получение практических навыков работы в консоли с дополнительными атрибутами. Рассмотрение работы механизма смены идентификатора процессов пользователей, а также влияние бита Sticky на запись и удаление файлов.

Ход работы

Создание программы simpleid.c

Войдите в систему от имени пользователя guest. Создайте программу simpleid.c (рис. 1).

Рисунок 1: Создание программы simpleid.c

Компиляция и выполнение программы

Скомплилируйте программу и убедитесь, что файл программы создан: gcc simpleid.c -o simpleid. Выполните программу simpleid: ./simpleid. Выполните системную программу id: id и сравните полученный вами результат с данными предыдущего пункта задания. Усложните программу, добавив вывод действительных идентификаторов (рис. 2).

Рисунок 2: Компиляция и выполнение программы

Работа с SetUID-битом

Получившуюся программу назовите simpleid2.c. Скомпилируйте и запустите simpleid2.c: gcc simpleid2.c -o simpleid2 ./simpleid2. От имени суперпользователя выполните команды: chown root:guest /home/guest/simpleid2, chmod u+s /home/guest/simpleid2. Используйте sudo или повысьте временно свои права с помощью su. Поясните, что делают эти команды. Выполните проверку правильности установки новых атрибутов и смены владельца файла simpleid2: ls -l simpleid2. Запустите simpleid2 и id: ./simpleid2 id. Сравните результаты. Проделайте тоже самое относительно SetGID-бита (рис. 3).

Рисунок 3: Работа с SetUID-битом

Практическое применение SetUID

Откомпилируйте её. gcc readfile.c -o readfile Смените владельца у файла readfile.c (или любого другого текстового файла в системе) и измените права так, чтобы только суперпользователь (root) мог прочитать его, a guest не мог. Проверьте, что пользователь guest не может прочитать файл readfile.c. Смените у программы readfile владельца и установите SetUID-бит. Проверьте, может ли программа readfile прочитать файл readfile.c? (рис. 4).

Рисунок 4: Практическое применение SetUID

Исследование Sticky-бита

Выясните, установлен ли атрибут Sticky на директории /tmp, для чего выполните команду ls -l / | grep tmp От имени пользователя guest создайте файл file01.txt в директории /tmp со словом test: echo “test” > /tmp/file01.txt Просмотрите атрибуты у только что созданного файла и разрешите чтение и запись для категории пользователей «все остальные»: ls -l /tmp/file01.txt, chmod o+rw /tmp/file01.txt, ls -l /tmp/file01.txt. От пользователя guest2 (не являющегося владельцем) попробуйте прочитать файл /tmp/file01.txt: cat /tmp/file01.txt. От пользователя guest2 попробуйте дозаписать в файл /tmp/file01.txt слово test2 командой echo “test2” > /tmp/file01.txt. Удалось ли вам выполнить операцию? Проверьте содержимое файла командой cat /tmp/file01.txt. От пользователя guest2 попробуйте записать в файл /tmp/file01.txt слово test3, стерев при этом всю имеющуюся в файле информацию командой echo “test3” > /tmp/file01.txt. Удалось ли вам выполнить операцию? Проверьте содержимое файла командой cat /tmp/file01.txt (рис. 5).

Рисунок 5: Исследование Sticky-бита

Выводы

В ходе лабораторной работы были изучены механизмы изменения идентификаторов, применения SetUID- и Sticky-битов. Были получены практические навыки работы с дополнительными атрибутами файлов в Linux.

Исследование показало, что:

  1. SetUID-бит позволяет программе выполняться с правами владельца файла
  2. Sticky-бит предотвращает удаление файлов в общих директориях пользователями, не являющимися владельцами этих файлов
  3. Эти механизмы обеспечивают дополнительный уровень безопасности в системе

Работа позволила лучше понять механизмы дискреционного разграничения доступа в Linux и их практическое применение.